def turn_right():  # 右转
    turn_left()
    turn_left()
    turn_left()


def turn_around():  # 掉头
    turn_left()
    turn_left()


def harvest():  # 收获函数，疯狂收萝卜
    while is_facing_north() and front_is_clear():  # 当面向北面且前方没有东西时满足条执行循环
        while object_here():  # 条件：当有东西在时
            take()  # 拿取
        while not object_here() and front_is_clear():  # 条件：当此处没有东西且前方是没有东西时
            move()  # 移动
    turn_right()  # 不满足以上条件，右转
    move()  # 移动
    turn_right()  # 再右转
    while not is_facing_north() and front_is_clear():  # 当不是面向北面且前面没有东西时执行循环
        while object_here():  # 当有东西在时
            take()  # 拿取
        while not object_here() and front_is_clear():  # 当此处没有东西且前面也没有东西时执行循环
            move()  # 移动
    turn_left()  # 左转
    move()  # 移动
    turn_left()  # 左转


def plant():  # 种植萝卜函数，疯狂种萝卜
    while is_facing_north():  # 面向北面时
        move()
        move()
        for plant in range(6):  # 种萝卜
            put()
            move()
        for column_up in range(2):  # 上面换一列
            move()
            turn_right()
    while not is_facing_north():  # 当不是面向北的时候
        move()
        move()
        for plant in range(6):  # 种萝卜
            put()
            move()
        for column_down in range(2):  # 下面换一列-重新回到面向北返回第一个循环
            move()
            turn_left()


def back_to_farm_start():  # 返回3行3列萝卜始发地
    turn_left()
    for back in range(6):  # 移动6次回到始发地
        move()
    turn_right()


def back_to_start():  # 返回最初的起点
    turn_left()
    for back in range(8):  # 移动8次回到始发地
        move()
    turn_right()


for start in range(2):  # 从起点出发
    move()  # 移动2次进入萝卜始发地3行3列位置
turn_left()
for round_trip_harvest in range(3):  # 往返来回3次
    harvest()  # 进入疯狂收萝卜环节
back_to_farm_start()  # 返回3行3列萝卜始发地
for round_trip_plant in range(3):  # 往返来回三次
    plant()  # 进入疯狂种萝卜环节
back_to_start()  # 返回最初的起点